<?php

require_once dirname(__FILE__).'/../lib/clientesGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/clientesGeneratorHelper.class.php';

/**
 * clientes actions.
 *
 * @package    gescell
 * @subpackage clientes
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class clientesActions extends autoClientesActions
{
    public function executeBuscar(sfWebRequest $request){
	   
	//Agregado por marcelo para Acer una Busqueda Incremental

        $this->clientes_list = DbFinder::from('Clientes')->
		      where('Nombre', 'LIKE', "%".$request->getParameter('buscar')."%")->
			  orwhere('apellido', 'like',"%".$request->getParameter('buscar')."%")->
			  orwhere('ruc','like',"%".$request->getParameter('buscar')."%")->
			  find();
           return $this->renderpartial('clientes/buscar',array('clientes_list' => $this->clientes_list));
       

        }
        public function executeListctasctes(sfWebRequest $request){
            $this->clientes = $this->getRoute()->getObject();
            $this->facturas = clientesPeer::FacturasCredito($this->clientes->getId());
            if (!$this->facturas){
                $this->forward('clientes','mensaje');
            }
        }
        public function executeNew(sfWebRequest $request)
        {
            $this->form = $this->configuration->getForm();
            $this->form->form2 = new clientestipoForm();
            $this->clientes = $this->form->getObject();
        }
        public function executeEdit(sfWebRequest $request)
        {
           $this->clientes = $this->getRoute()->getObject();
           $this->form = $this->configuration->getForm($this->clientes);
           $this->form->form2 = new clientestipoForm();
        }
        public function executeAgregartipo(sfWebRequest $request){
            if ($request->isXmlHttpRequest()){
                //$clientestipo = new clientestipo();
                $this->Form2 = new clientestipoForm();
                $form = new clientesForm();
                $this->procesarForm($request, $this->Form2);
                //return $this->rendertext('Guardado');
                return $this->renderpartial('clientes/tipoCliente1',array('form'=>$form));
            }
        }
        protected function procesarForm(sfWebRequest $request, sfForm $form)
        {
            $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
            if ($form->isValid()){
                $clientestipo = $form->save();
            }
                    
        }
        public function executeMensaje(sfWebRequest $request){
            $this->clientes = clientesPeer::retrieveByPK($request->getParameter('id'));
            $this->mensaje = $this->clientes->getNombre().', '.$this->clientes->getApellido();
        }
        public function executeReporte(){
            
        }
         public function executeGenerarReporte(sfWebRequest $request){

                  $cliente_id   = $request->getParameter('clientes');
                  $criterio     = $request->getParameter('busqueda');
                  $fecha_inicio = $request->getParameter('fecha_inicio');
                  $fecha_fin    = $request->getParameter('fecha_fin');
                  //=========================================================
                  //Se suma un dia para poder realizar los reportes entre las fechas elegidas
                  //=========================================================
                  if ($fecha_inicio['day'] > 0)
                      $fecha_inicio  = strftime("%Y-%m-%d", mktime(0, 0, 0, $fecha_inicio['month'], $fecha_inicio['day'], $fecha_inicio['year']));
                  else
                      $fecha_inicio = date('Y-m-d', time());
                  if ($fecha_fin['day'] > 0)
                       $fecha_fin     = strftime("%Y-%m-%d", mktime(0, 0, 0, $fecha_fin['month'], $fecha_fin['day'], $fecha_fin['year']));
                   else
                      $fecha_fin  = $fecha_inicio;

                   //==Creacion del Array para los datos del Reporte
                   $cabecera = array(
                       '1' => $cliente_id,
                       '2' => $criterio,
                       '3' => $fecha_inicio,
                       '4' => $fecha_fin

                       );
                   //==Fin de laCreacion del Array para los datos del Reporte
                  $this->reporte = facturasPeer::getDatosReporte($cliente_id, $fecha_inicio, $fecha_fin,$criterio['0']);//modelosxingresosPeer::getReportes($tecnico_id, $fecha_inicio, $fecha_fin,$criterio['0']);
                  $this->imprimirReporte($this->reporte, $cabecera);
                  return sfView::NONE;

        }
        public function imprimirReporte($reporte, $cabecera){
                //=====Aqui debe estar la Funcion que crea el reporte
                $pdf = informes::CrearReporte('Movimientos de Clientes');
                //
                $pdf->SetTextColor(255);
	        $pdf->SetFillColor(120,120,120);
		$pdf->SetLineWidth(.1);
		$pdf->SetFont('Arial','B',8);
                //
                $cliente = clientesPeer::retrieveByPK($cabecera[1]);
                if ($cliente)
                    $cliente = $cliente->__toString();
                else
                    $cliente = 'Todos';
                $pdf->Cell(55,4,'Cliente: '.utf8_decode($cliente),0,0,'L',1);
                $criterio = $cabecera[2];
                switch ($criterio['0']) {
                    case 1:
                        $TrabReporte = 'Todas las Facturas';Break;
                    case 2:
                        $TrabReporte = 'Facturas a Credito';Break;
                    case 3:
                        $TrabReporte = 'Facturas Contado';Break;
                }
                $pdf->Cell(45,4,'Reporte de: ' .utf8_decode($TrabReporte),0,0,'L',1);
                $fecha_inicio= $cabecera['3'];
                $fecha_fin= $cabecera['4'];
                $pdf->Cell(40,4,'Fecha Inicio: '.$fecha_inicio,0,0,'L',1);
		$pdf->Cell(40, 4,'Fecha Fin: '.$fecha_fin, 0, 1, 'L', 1);

                //=======Cabecera reporte=============================
                $pdf->SetTextColor(0,0,102);
                $pdf->Cell(180,10,'Detalles del Reporte',0,1,'C',0);
                $pdf->SetTextColor(255);
                $pdf->Cell(15,4,'Item',1,0,'C',1);
                $pdf->Cell(15,4,'Numero',1,0,'L',1);
                $pdf->Cell(50,4,utf8_decode('Condición de Pago'),1,0,'L',1);
                $pdf->Cell(30,4,'Estado',1,0,'L',1);
                $pdf->Cell(30,4,'Total Factura',1,0,'L',1);
                $pdf->Cell(25,4,'Total Pagado',1,1,'L',1);
                //$pdf->Cell(30,4,utf8_decode('Fecha Reparación'),1,1,'L',1);
                //====================================================
                $e = 1;
                foreach($reporte as $report){
                     $pdf->SetTextColor(0);
                     $pdf->Cell(15,4,$e,1,0,'C',0);
                     $numdoc = $report->getNumeroDeComprobante();
                     $pdf->Cell(15,4,$numdoc,1,0,'L',0);
                      $condicion = $report->getCredito()?'CREDITO':'CONTADO';
                     $pdf->Cell(50,4,$condicion,1,0,'L',0);
                     $estado = $report->getPagado()? 'PAGADO':'PENDIENTE';

                     $pdf->Cell(30,4,$estado,1,0,'L',0);
                     $total = $report->getTotal();
                     $pdf->Cell(30,4,$total,1,0,'L',0);
                     $totalpag = $report->getTotalPagado();
                     $pdf->Cell(25,4,$totalpag,1,1,'L',0);
                     
                    
                     $e++;
                }
                 $pdf->Cell(180,10,'',0,1,'L',0);
                 $pdf->SetTextColor(0,0,102);
                 $texto_salida = utf8_decode('Reporte de: '.$TrabReporte.', En total: '.--$e.', Realizados entre: '.$fecha_inicio.' y '.$fecha_fin);
                 $pdf->Cell(180,4,$texto_salida,0,1,'L',0);
                //====================================================
                $pdf->Output('reporte_movimientos_'.$cliente.'.pdf','D');

                //====================================================

   }

   }
